#ifndef DATE_H
#define DATE_H

#include <iostream>

class Date
{
	private:
		int year;
		int month;
		int day;

		bool is_valid_date() const;

		bool is_leap_year() const;

		int get_days_in_month() const;

		int get_year() const;
		int get_month() const;
		int get_day() const;
		int get_year_min() const;
		int get_year_max() const;
		int get_month_min() const;
		int get_month_max() const;
		int get_day_min() const;
		int get_day_max() const;

	public:

		enum Exceptions
		{
			INVALID_DATE
		};

		Date();
		
		friend std::ostream& operator<<(std::ostream &p_out_stream, const Date &p_date);
		
		friend std::istream& operator>>(std::istream &p_in_stream, Date &p_date);

};

#endif
